package com.xayy.health.mgt.controller;

import cn.kawins.base.result.ResultBody;
import cn.kawins.mybatis.base.BaseController;
import com.xayy.health.mgt.model.FaultInfo;
import com.xayy.health.mgt.model.dto.FaultInfoDto;
import com.xayy.health.mgt.service.FaultInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


/**
 * @author cuixidong
 * @version 1.0
 * @date 2023/4/6 11:21
 **/
@RestController
@RequestMapping(value = "/fault")
@Api(tags = "故障信息")
public class FaultController extends BaseController<FaultInfo> {

    @Autowired
    private FaultInfoService faultInfoService;

    /**
     * 获取故障信息分页列表
     *
     * @return ResultBody
     */
    @ApiOperation(value = "获取故障信息分页列表")
    @GetMapping("/pageList")
    public ResultBody pageList() {
        return dataPage("faultPageList");
    }


    /**
     * 获取故障信息
     * @param id 故障id
     * @return ResultBody
     */
    @ApiOperation(value = "获取故障信息")
    @GetMapping("/getFaultInfo/{id}")
    public ResultBody getFaultInfo(@PathVariable Long id) {
        FaultInfo faultInfo = faultInfoService.selectById(id);
        return ResultBody.success(faultInfo);
    }

    /**
     * 增加故障信息
     * @param faultInfo 故障信息
     * @return ResultBody
     */
    @ApiOperation(value = "增加故障信息")
    @PostMapping("add")
    public ResultBody addFaultInfo(@RequestBody FaultInfo faultInfo) {
        return ResultBody.success(faultInfoService.insert(faultInfo));
    }


    /**
     * 修改故障信息
     * @param faultInfo 故障信息
     * @return ResultBody
     */
    @ApiOperation(value = "修改故障信息")
    @PostMapping("update")
    public ResultBody updateFaultInfo(@RequestBody FaultInfo faultInfo) {
        return faultInfoService.updateFaultInfo(faultInfo).body();
    }


    /**
     * 删除故障信息
     * @param id 故障id
     * @return ResultBody
     */
    @ApiOperation(value = "删除故障信息")
    @DeleteMapping("deleteFaultInfo/{id}")
    public ResultBody deleteFaultInfo(@PathVariable Long id) {
        faultInfoService.deleteById(id);
        return ResultBody.success();
    }


    /**
     * 故障信息列表
     * @param faultInfoDto 故障信息
     * @return ResultBody
     */
    @ApiOperation(value = "故障信息列表")
    @PostMapping("classify")
    public ResultBody classifySelectFaultInfo(@RequestBody FaultInfoDto faultInfoDto) {
        return faultInfoService.getFaultInfoList(faultInfoDto).body();
    }


    /**
     * 故障次数等级统计图
     * @param faultInfoDto 故障信息入参
     * @return ResultBody
     */
    @ApiOperation(value = "故障次数等级统计图")
    @PostMapping("statistics")
    public ResultBody statisticsFaultInfo(@RequestBody FaultInfoDto faultInfoDto) {
        return faultInfoService.statisticsFaultInfo(faultInfoDto).body();
    }


    /**
     * 引接第三方数据-图谱提供
     * @return ResultBody
     */
    @ApiOperation(value = "引接第三方数据-图谱提供")
    @GetMapping("leadFaultInfos")
    public ResultBody leadFaultInfos() {
        //return faultInfoService.leadFaultInfos().body();
        return ResultBody.success();
    }

}
